home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 2.6 KB | 132 lines | [TEXT/CWIE] |
- // PointObject.cp
-
- #ifndef PointObject_h
- #include "PointObject.h"
- #endif
- #ifndef MinMax_h
- #include "MinMax.h"
- #endif
- #ifndef Assert_h
- #include "Assert.h"
- #endif
- #ifndef Sign_h
- #include "Sign.h"
- #endif
-
- const PointObject PointObject::zero( 0, 0 );
-
- const PointObject PointObject::up( 0, maxint16 );
- const PointObject PointObject::left( maxint16, 0 );
- const PointObject PointObject::down( 0, minint16 );
- const PointObject PointObject::right( minint16, 0 );
-
- const PointObject PointObject::upLeft( maxint16, maxint16 );
- const PointObject PointObject::upRight( minint16, maxint16 );
- const PointObject PointObject::downLeft( maxint16, minint16 );
- const PointObject PointObject::downRight( minint16, minint16 );
-
- void PointObject::BeAboveLeftOf( PointObject r )
- {
- h = Max( h, r.h );
- v = Max( v, r.v );
- }
-
- void PointObject::BeBelowLeftOf( PointObject r )
- {
- h = Max( h, r.h );
- v = Min( v, r.v );
- }
-
- void PointObject::BeAboveRightOf( PointObject r )
- {
- h = Min( h, r.h );
- v = Max( v, r.v );
- }
-
- void PointObject::BeBelowRightOf( PointObject r )
- {
- h = Min( h, r.h );
- v = Min( v, r.v );
- }
-
- void PointObject::operator+=( PointObject r )
- {
- Assert( CanAdd( h, r.h ) );
- Assert( CanAdd( v, r.v ) );
- h += r.h;
- v += r.v;
- }
-
- void PointObject::operator-=( PointObject r )
- {
- Assert( CanSubtract( h, r.h ) );
- Assert( CanSubtract( v, r.v ) );
- h -= r.h;
- v -= r.v;
- }
-
- void PointObject::operator*=( int16 n )
- {
- Assert( CanMultiply( h, n ) );
- Assert( CanMultiply( v, n ) );
- h *= n;
- v *= n;
- }
-
- void PointObject::operator/=( int16 n )
- {
- Assert( n != 0 );
- h /= n;
- v /= n;
- }
-
- PointObject PointObject::operator-() const
- {
- Assert( h != minint16 );
- Assert( v != minint16 );
- return PointObject( - h, -v );
- }
-
- PointObject PointObject::operator+( PointObject r ) const
- {
- Assert( CanAdd( h, r.h ) );
- Assert( CanAdd( v, r.v ) );
- return PointObject( h + r.h, v + r.v );
- }
-
- PointObject PointObject::operator-( PointObject r ) const
- {
- Assert( CanSubtract( h, r.h ) );
- Assert( CanSubtract( v, r.v ) );
- return PointObject( h - r.h, v - r.v );
- }
-
- PointObject PointObject::operator*( int16 n ) const
- {
- Assert( CanMultiply( h, n ) );
- Assert( CanMultiply( v, n ) );
- return PointObject( h * n, v * n );
- }
-
- PointObject PointObject::operator/( int16 n ) const
- {
- Assert( n != 0 );
- return PointObject( h / n, v / n );
- }
-
- uint32 PointObject::NormSquared() const
- {
- return uint32(h) * uint32(h) + uint32(v) * uint32(v);
- }
-
- uint32 PointObject::TaxicabNorm() const
- {
- return Abs( uint32(h) ) + Abs( uint32(v) );
- }
-
- uint32 PointObject::TaxicabDistanceTo( Point p ) const
- {
- return Abs( int32(h) - int32( p.h ) )
- + Abs( int32(v) - int32( p.v ) );
- }
-